<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      /* 求N的阶乘 */
      //   function getFactorial(n) {
      //     var base = 1;
      //     for (var i = 1; i <= n; i++) {
      //       base *= i;
      //     }
      //     return base;
      //   }

      function getFactorial(n) {
        console.log("getFactorial", n);
        //   递归终止条件（如果递归没有终止条件）
        if (n === 1) {
          var result = 1;
          console.log("%s的阶乘是", n, result);
          return result;
        }

        // 自己调用自己称之为递归调用
        //   10! = 10 * 9!
        var result = n * getFactorial(n - 1);
        console.log("%s的阶乘是", n, result);
        return result;
      }
      //   console.log(getFactorial(5));

      /* 斐波那契（fibonacci）数列 */
      /* 1 1 2 3 5 8 13... */
      function getFibonacci(n) {
        // 前两项直接返回1
        if (n === 0 || n === 1) {
          return 1;
        }

        // 后续项的值 = 上1项 + 上上项
        return getFibonacci(n - 1) + getFibonacci(n - 2);
      }
      for (var i = 0; i < 101; i++) {
        console.log(i, getFibonacci(i));
      }
    </script>
  </body>
</html>
